package com.example.smssender;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textfield.TextInputLayout;

/**
 * 联系人编辑页面 - 创建或编辑联系人
 */
public class ContactEditActivity extends AppCompatActivity {
    
    public static final String EXTRA_CONTACT_ID = "contact_id";
    public static final String EXTRA_CONTACT = "contact";
    
    private TextInputEditText etName;
    private TextInputEditText etPhoneNumber;
    private Button btnSave;
    
    private DataManager dataManager;
    private Contact contact;
    private boolean isEditMode = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contact_edit);
        
        dataManager = DataManager.getInstance(this);
        
        // 初始化视图
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
        
        etName = findViewById(R.id.etName);
        etPhoneNumber = findViewById(R.id.etPhoneNumber);
        btnSave = findViewById(R.id.btnSave);
        
        // 检查是否是编辑模式
        // 优先使用直接传递的 Contact 对象（更可靠，避免ID重复问题）
        Contact passedContact = (Contact) getIntent().getSerializableExtra(EXTRA_CONTACT);
        if (passedContact != null) {
            isEditMode = true;
            contact = passedContact;
            etName.setText(contact.getName() != null ? contact.getName() : "");
            etPhoneNumber.setText(contact.getPhoneNumber() != null ? contact.getPhoneNumber() : "");
            if (getSupportActionBar() != null) {
                getSupportActionBar().setTitle("编辑联系人");
            }
        } else {
            // 向后兼容：如果没有传递 Contact 对象，则使用 ID 查找
            String contactId = getIntent().getStringExtra(EXTRA_CONTACT_ID);
            if (contactId != null) {
                isEditMode = true;
                contact = dataManager.getContactById(contactId);
                if (contact != null) {
                    etName.setText(contact.getName() != null ? contact.getName() : "");
                    etPhoneNumber.setText(contact.getPhoneNumber() != null ? contact.getPhoneNumber() : "");
                    if (getSupportActionBar() != null) {
                        getSupportActionBar().setTitle("编辑联系人");
                    }
                } else {
                    Toast.makeText(this, "联系人不存在", Toast.LENGTH_SHORT).show();
                    finish();
                }
            } else {
                contact = new Contact();
                if (getSupportActionBar() != null) {
                    getSupportActionBar().setTitle("新建联系人");
                }
            }
        }
        
        // 保存按钮点击事件
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveContact();
            }
        });
    }
    
    private void saveContact() {
        String name = etName.getText().toString().trim();
        String phoneNumber = etPhoneNumber.getText().toString().trim();
        
        // 验证输入
        if (name.isEmpty()) {
            Toast.makeText(this, "请输入姓名", Toast.LENGTH_SHORT).show();
            return;
        }
        
        if (phoneNumber.isEmpty()) {
            Toast.makeText(this, "请输入手机号码", Toast.LENGTH_SHORT).show();
            return;
        }
        
        // 简单的手机号格式验证
        if (!phoneNumber.matches("^1[3-9]\\d{9}$")) {
            Toast.makeText(this, "请输入正确的手机号码", Toast.LENGTH_SHORT).show();
            return;
        }
        
        // 保存联系人
        contact.setName(name);
        contact.setPhoneNumber(phoneNumber);
        
        if (isEditMode) {
            dataManager.updateContact(contact);
            Toast.makeText(this, "联系人已更新", Toast.LENGTH_SHORT).show();
        } else {
            dataManager.addContact(contact);
            Toast.makeText(this, "联系人已添加", Toast.LENGTH_SHORT).show();
        }
        
        finish();
    }
    
    @Override
    public boolean onSupportNavigateUp() {
        finish();
        return true;
    }
}
